home *** CD-ROM | disk | FTP | other *** search
/ 8bitfiles.net/archives / archives.tar / archives / genie-commodore-file-library / C64-128Toolkit / MSD-DU12.ARC / MSD - $򶑣 < prev    next >
Encoding:
Text File  |  2019-04-13  |  5.0 KB  |  77 lines

  1. ║CM:MSD - $╞0┬9
  2. ║LM21:RM70:PP66:PG60
  3. ║P#116
  4. ║FT1:,,╨AGE <>
  5. ║AI-16
  6.        ╘╙┴╘╬    ┼NSURE ┴╘╬ LINE AND ┴╘╬═╧─ ARE CONSISTENT
  7.  
  8. $╞0┬9           ╠OAD .┴ WITH ┴╘╬═╧─ [$52] FLAG.
  9. $╞0┬┬           ╔F .┴ IS ZERO, WE ARE NOT IN ATTENTION MODE SO BRANCH TO ╘╙╘┴50 TO CHECK FOR ABSENCE OF ┴╘╬ SIGNAL.
  10. $╞0┬─           ╫E ARE IN ATTENTION MODE SO CHECK FOR PRESENCE OF ┴╘╬ SIGNAL ON BIT 3 OF PORT ┴ [$00].  ╔F ABSENT, BRANCH TO ╘┴╘╬20 TO CARRY OUT THE COMMAND.
  11. $╞0├0  ╘╙╘╥╘╬   ┴╘╬═╧─ AND ┴╘╬ LINE AGREE SO RETURN.
  12. $╞0├1  ╘╙╘┴50   ╫E ARE NOT IN ATTENTION MODE SO CHECK FOR ABSENCE OF ┴╘╬ SIGNAL ON BIT 3 OF PORT ┴ [$00].  ╔F ABSENT, BRANCH TO ╘╙╘╥╘╬.
  13. $╞0├4           ┴╘╬ SIGNAL HAS OCCURRED SO ABORT CURRENT WORK AND JUMP TO ┴╘╬╙╥╓ [$┼┼┼6] TO HANDLE IT.
  14. $╞0├7           ┴╘╬ SIGNAL HAS VANISHED SO JUMP TO ┴╘╬╙20 [$┼╞5┼] TO CARRY OUT THE ATTENTION COMMAND.
  15.  
  16.  
  17.  
  18.        ┴╘╬╙╥╔   ╔┼┼┼ BUS HANDLER
  19.  
  20. $╞0├┴           ─ISABLE INTERRUPTS AND SET STACK POINTER TO $╞╞.
  21. $╞0├┼           ├LEAR BIT 3 ON PORT ─ [$03] TO INDICATE WE ARE LISTENING ON THE ╔┼┼┼ BUS.
  22. $╞0─0           ╩╙╥ ┬╒╙╧╬ [$╞┼11] TO SET PORT ┬ IN ╥┼┴─ MODE.
  23. $╞0─3           ╙ET ╨ORT ┬ [$01] TO $╞╞.  ╘HESE INSTRUCTIONS ARE UNNECESSARY.
  24. $╞0─7           ╙ET ╨ORT ├ [$02] TO $33 (╬─┴├, ╬╥╞─ = LOW) AS PART OF THE ╔┼┼┼ BYTE TRANSFER SEQUENCE.
  25. $╞0─┬           ╙ET LINE 1 (SERIAL ┴╘╬ ┴├╦) ON ╨ORT ┴ [$00].  ┴GAIN THESE INSTRUCTIONS ARE UNNECESSARY.
  26. $╞0──  ┴╘╬╔1    ├LEAR LINE 3 (╬─┴├) ON PORT ├ [$02] TO INDICATE DATA BYTE IS NOT ACCEPTED.
  27. $╞0─╞           ╙ET LINE 2 (╬╥╞─) ON PORT ├ [$02] TO INDICATE WE ARE READY TO RECEIVE DATA.
  28. $╞0┼1  ┴╘╬╔2    ╔F LINE 2 (╔┼┼┼ ┴╘╬) ON PORT ├ [$02] HAS GONE LOW, BRANCH TO ┴╘╬╔10 TO CARRY OUT THE COMMAND.
  29. $╞0┼4           ╔F LINE 0 (─┴╓) ON PORT ├ [$02] IS LOW, LOOP BACK TO ┴╘╬╔2 TO WAIT FOR IT TO GO HIGH WHICH INDICATES A BYTE HAS BEEN SENT.
  30. $╞0┼7           ├LEAR LINE 2 (╬╥╞─) ON PORT ├ [$02] TO INDICATE WE ARE NOT READY FOR DATA.
  31. $╞0┼9           ╙ET ┼╧╔╞╠╟ [$┬1] TO THE VALUE OF LINE 1 (┼╧╔) ON PORT ├ [$02].
  32. $╞0┼╞           ╠OAD BYTE FROM PORT ┬ [$01] AND SAVE IT IN    ╘═╨╙┴╔ [$6┬].
  33. $╞0╞5           ╙ET LINE 3 (╬─┴├) ON PORT ├ [$02] TO INDICATE DATA ACCEPTED.
  34. $╞0╞7           ├LEAR .┘ SO IT CAN BE USED AS A ZERO VALUE.
  35. $╞0╞9           ╠OAD .┴ FROM ╘═╨╙┴╔ [$6┬] AND ┴╬─ IT WITH $60 TO SEE IF IT IS A TALK OR LISTEN COMMAND.
  36. $╞0╞─           ╔F .┴ = $40 THEN WE HAVE RECEIVED A TALK COMMAND SO BRANCH TO ┴╘╬╔7.
  37. $╞101           ╔F .┴ = $20 THEN WE HAVE RECEIVED A LISTEN COMMAND SO BRANCH TO ┴╘╬╔3.
  38. $╞105           ╔F .┴ = $60 THEN WE HAVE A SECONDARY ADDRESS SO BRANCH TO ┴╘╬╔8.
  39. $╞109           ╔GNORE ALL OTHER VALUES BY BRANCHING TO ┴╘╬╔9.
  40. ║FP0
  41. $╞10┬  ┴╘╬╔3    ╔F ╘═╨╙┴╔ [$6┬] = ╠╙╬┴─╥ [$77] THEN THIS IS A LISTEN COMMAND FOR US SO BRANCH TO ┴╘╬╔5.
  42. $╞111           ╔F ╘═╨╙┴╔ [$6┬] IS NOT $3╞ (AN UNLISTEN COMMAND) THEN BRANCH TO ┴╘╬╔4.
  43. $╞115           ├LEAR ╠╙╬┴├╘ [$50] FLAG.
  44. $╞117  ┴╘╬╔4    ├LEAR ┴├╘╠╬╔ [$4├┴╞] FLAG.
  45. $╞11┴           ╩UMP TO ┴╘╬╔9 TO CONTINUE.
  46. $╞11─  ┴╘╬╔5    ╙ET ╠╙╬┴├╘ [$50] TO A NON ZERO VALUE TO INDICATE WE ARE TO LISTEN.
  47. $╞11╞           ├LEAR ╘╠╦┴├╘ [$51] FLAG.
  48. $╞121  ┴╘╬╔6    ╙ET ╙┴ [$58], ╧╥╟╙┴ [$59], AND ┴├╘╠╬╔ [$4├┴╞] TO $20.
  49. $╞12┴           ┬RANCH TO ┴╘╬╔9 TO CONTINUE.
  50. $╞12├  ┴╘╬╔7    ├LEAR ╘╠╦┴├╘ [$51] FLAG.
  51. $╞12┼           ╔F ╘═╨╙┴╔ [$6┬] DOES NOT MATCH ╘╠╦┴─╥ [$78] THIS IS NOT A TALK COMMAND FOR US SO BRANCH TO ┴╘╬╔4.
  52. $╞134           ╙ET ╘╠╦┴├╘ [$51] TO A NON ZERO VALUE TO INDICATE WE ARE TO TALK.
  53. $╞136           ╙AVE .┘ IN ╠╙╬┴├╘ [$50] FLAG TO CLEAR IT.
  54. $╞138           ┬RANCH TO ┴╘╬╔6 TO CONTINUE.
  55. $╞13┴  ┴╘╬╔8    ╔F ┴├╘╠╬╔ [$4├┴╞] IS ZERO, THE SECONDARY ADDRESS HAS NOT BEEN RECEIVED YET SO BRANCH TO ┴╘╬╔9.
  56. $╞13╞           ╙AVE THE INPUT BYTE AT ╘═╨╙┴╔ [$6┬] AS THE SECONDARY ADDRESS ╧╥╟╙┴ [$59] AND SAVE THIS VALUE ON THE STACK.
  57. $╞144           ╙ET ╙┴ [$58] TO ╧╥╟╙┴ [$59] ┴╬─ $0╞.
  58. $╞148           ╥ESTORE THE SECONDARY ADDRESS FROM THE STACK AND ┴╬─ IT WITH $╞0.
  59. $╞14┬           ╔F THE RESULT IS NOT $┼0 (A CLOSE COMMAND) THEN BRANCH TO ┴╘╬╔9.
  60. $╞14╞           ┼NABLE INTERRUPTS AND ╩╙╥ ├╠╧╙┼ [$─┴15] TO CLOSE THE FILE ASOCIATED WITH THIS SECONDARY ADDRESS.
  61. $╞153           ─ISABLE INTERRUPTS.
  62. $╞154           ├LEAR BIT 3 ON PORT ─ [$03] TO INDICATE WE ARE LISTENING ON THE ╔┼┼┼ BUS.
  63. $╞156           ╔F BIT 7 OF ╔╧╞╠╟ [$6├] IS SET THEN THE ╔/╧ BUS IS STILL CONFIGURED FORREADING ON PORT ┬ SO BRANCH TO ┴╘╬╔9.
  64. $╞159           ╩╙╥ ┬╒╙╧╬ [$╞┼11] TO SET PORT ┬ IN ╥┼┴─ MODE.
  65. $╞15├  ┴╘╬╔9    ╔F LINE 0 (─┴╓) ON PORT ├ [$02] IS LOW LOOP TO ┴╘╬╔9 TO WAIT FOR IT TO GO HIGH.
  66. $╞15╞           ╩UMP TO ┴╘╬╔1 TO GET ANOTHER BYTE.
  67. $╞162  ┴╘╬╔10   ╔F ╠╙╬┴├╘ [$50] = $00 WE DO NOT NEED TO LISTEN SO BRANCH TO ┴╘╬╔11.
  68. $╞166           ├LEAR LINE 2 (╬╥╞─) ON PORT ├ [$02].
  69. $╞168           ├LEAR LINE 1 (SERIAL ┴╘╬ ┴├╦) ON PORT ┴ [$00].
  70. $╞16┴           ╩╙╥ ╠╔╙╘╬╔ [$╞17┼] TO LISTEN ON THE ╔┼┼┼ BUS.
  71. $╞16─           ╩UMP TO ╔─╠┼ [$┼971].
  72. $╞170  ┴╘╬╔11   ╙ET LINE 3 (╬─┴├) ON PORT ├ [$02].
  73. $╞172           ├LEAR LINE 1 (SERIAL ┴╘╬ ┴├╦) ON PORT ┴ [$00].
  74. $╞174           ╔F ╘╠╦┴├╘ [$51] = $00 WE DO NOT NEED TO TALK SO BRANCH TO ┴╘╬╔12.
  75. $╞178           ╩╙╥ ╘┴╠╦╔ [$╞1╞5] TO TALK ON THE ╔┼┼┼ BUS.
  76. $╞17┬  ┴╘╬╔12   ╩UMP TO ╔─╠┼ [$┼971].
  77.